1.6 Prädikate in der SELECT
-Anweisung
Im Normalfall werden Duplikate, also doppelte oder mehrfache gleiche Ergebnisse, innerhalb
der Ergebnisliste einer Abfrage nicht zusammengefasst
oder weggelassen. Doppelte Datensätze kommen häufiger vor wenn nur sehr wenige
Attribute gleichzeitig angezeigt werden sollen. Es kann Redundanz auftreten,
nämlich wenn bei zwei oder mehr Entitäten (bezeichnet in der realen Welt
eindeutig identifizierbare einzelne Objekte) alle gezeigten Attribute denselben Inhalt
haben, z.B. gleiche Namen.
Durch die Verwendung von Prädikaten (Parameter) in der SELECT
-Anweisung
kann eine Zusammenfassung erreicht werden. Wenn wir beispielsweise aus unserer Datenbank
eine Liste erzeugen, die alle Nachnamen enthält, die als weitere Einschränkung
mit A beginnen, ist es sehr wahrscheinlich, dass häufige Namen mehrfach auftauchen.
Wir können die Abfrage aber auch so stellen, dass jeder Name nur
einmal auftaucht. Das geschieht mit dem Wort DISTINCT
. Es verhindert
die Auswahl von Duplikaten in den ausgewählten Spalten und steht direkt
nach SELECT
und vor der Feldliste
SELECT Prädikat Feldliste FROM ...
DISTINCT
erkennt schon bei einem Unterschied in
nur einer Spalte, dass unterschiedliche Datensätze vorliegen. Als weitere
Prädikate kommen in Frage:
-
ALL
— Auswahl aller Datensätze
(kann in phpMyAdmin weggelassen werden, da dies der Default-Wert ist)
Die Prädikate DISTINCT
und ALL
können wir in einer Abfrage
ausprobieren. Wählen wir zur Veranschaulichung von Mitarbeitern die Position aus der Tabelle
tbl_mitarbeiter aus. Einmal ohne und dann
mit Anzeige von Duplikaten.
Das sieht dann so aus:
SELECT DISTINCT position FROM tbl_mitarbeiter SELECT ALL position FROM tbl_mitarbeiter
In dieser SQL-Abfrage wird die Spalte position der Tabelle tbl_mitarbeiter
in eine Ergebnistabelle projiziert. Die Ausgabeliste der Tabelle enthält
alle Berufsbezeichnungen, im ersten Fall ohne doppelte Eintragungen und im zweiten auch
mehrfach vorkommende. Der optionale Parameter ALL
kann weggelassen werden.
… Versuchen Sie es selbst! Die DISTINCT
-Abfrage liefert 8 Ergebnisse und die ALL-Abfrage 21.